import pandas as pd

# 读取数据集
df = pd.read_csv('root-god-end-design-backend\\app\services\XMN2023.csv')

# 定义各产业的权重
weights = {
    'fishery': {'Visibility': 0.05, 'Air_Temperature': 0.1, 'Wind_Speed': 0.2, 'Air_Pressure': 0.1, 'Sea_Temperature': 0.3, 'Wind_Wave_Height': 0.15, 'Wind_Wave_Period': 0.1},
    'tourism': {'Visibility': 0.3, 'Air_Temperature': 0.3, 'Wind_Speed': 0.1, 'Air_Pressure': 0.1, 'Sea_Temperature': 0.05, 'Wind_Wave_Height': 0.1, 'Wind_Wave_Period': 0.05},
    'shipping': {'Visibility': 0.2, 'Air_Temperature': 0.05, 'Wind_Speed': 0.25, 'Air_Pressure': 0.1, 'Sea_Temperature': 0.05, 'Wind_Wave_Height': 0.25, 'Wind_Wave_Period': 0.1},
    'energy': {'Visibility': 0.05, 'Air_Temperature': 0.05, 'Wind_Speed': 0.4, 'Air_Pressure': 0.1, 'Sea_Temperature': 0.05, 'Wind_Wave_Height': 0.15, 'Wind_Wave_Period': 0.2},
    'farming': {'Visibility': 0.05, 'Air_Temperature': 0.4, 'Wind_Speed': 0.1, 'Air_Pressure': 0.2, 'Sea_Temperature': 0.05, 'Wind_Wave_Height': 0.1, 'Wind_Wave_Period': 0.1},
    'biotech': {'Visibility': 0.05, 'Air_Temperature': 0.15, 'Wind_Speed': 0.1, 'Air_Pressure': 0.2, 'Sea_Temperature': 0.15, 'Wind_Wave_Height': 0.15, 'Wind_Wave_Period': 0.2}
}

# 选取参与计算的列
selected_columns = ['Visibility', 'Air_Temperature', 'Wind_Speed', 'Air_Pressure', 'Sea_Temperature', 'Wind_Wave_Height', 'Wind_Wave_Period']

# 处理缺失值
df[selected_columns] = df[selected_columns].fillna(0)

# 数据标准化处理（使用最小-最大缩放，将数据缩放到50-100范围）
for col in selected_columns:
    if df[col].max() != df[col].min():  # 避免除零错误
        df[col] = ((df[col] - df[col].min()) / (df[col].max() - df[col].min())) * 50 + 50
    else:
        df[col] = 75  # 如果某列所有值相同，设为75分(中间值)

# 对每个产业计算得分
for industry, weight_dict in weights.items():
    df[industry + '_scores'] = 0
    for col in selected_columns:
        df[industry + '_scores'] += df[col] * weight_dict[col]

    # 将得分限制在50-100之间（理论上已不需要，但保留以防万一）
    df[industry + '_scores'] = df[industry + '_scores'].clip(50, 100)

# 将结果保存为csv文件
df.to_csv('XMN2001_weighted.csv', index=False)